import java.util.Scanner;

public class hanoi {
    public static void main(String[] args) {
        System.out.println("输入层数=> ");
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        func(n,"left","right","mid");
    }

    private static void func(int n, String left, String right, String mid) {
        //如果只剩一个圆盘就直接从 左边 -》移到 -》右边

        if(n==1)
        {
            System.out.println(" Mvoe 1 From "+left+" to "+right);
        }
        else {
            //此时假设n==3
            //如果有多个，就将  左边的 移到  中间位置，
            //先将最上边的的 1 移到 右边，将第二个 2，移到中间位置，最后将右边的1，移到中间，此时中间就是12了
            func(n - 1, left, mid, right);
            //将最下边的 3 从 最左边 移到 最右边
            System.out.println(" Mvoe " + n + " From " + left + " to " + right);
            //然后将中间的，从中间移到右边
            //现将中间位置最上边的 1 从中间移到左边，然后将中间位置的2 移到右边，最后将左边位置的1 从 左边移到右边
            func(n - 1, mid, right, left);
        }
    }



    //求汉诺塔的步数问题
    public static void main1(String[] args) {
        System.out.println("输入层数=> ");
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        fun(n,"left","right","mid");
        System.out.println(count);

    }
    static  int count=0;
    private static void fun(int n, String left, String right, String mid)
    {

        //如果只剩一个圆盘就直接从 左边 -》移到 -》右边
        if(n==1)
        {
            System.out.println(" Mvoe 1 From "+left+" to "+right);
            count++;
        }
        else {
            //此时假设n==3
            //如果有多个，就将  左边的 移到  中间位置，
            //先将最上边的的 1 移到 右边，将第二个 2，移到中间位置，最后将右边的1，移到中间，此时中间就是12了
            fun(n - 1, left, mid, right);
            //将最下边的 3 从 最左边 移到 最右边
            System.out.println(" Mvoe " + n + " From " + left + " to " + right);
            count++;
            //然后将中间的，从中间移到右边
            //现将中间位置最上边的 1 从中间移到左边，然后将中间位置的2 移到右边，最后将左边位置的1 从 左边移到右边
            fun(n - 1, mid, right, left);

        }
    }

}
